package com.shop.cereshop.app.domain.shop;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.shop.cereshop.app.annotation.KeepLongAsNumber;
import com.shop.cereshop.app.domain.product.ShopProductVO;
import com.shop.cereshop.commons.domain.shop.CereBusinessTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @description:
 * @author zdd
 * @date 2025/10/22 16:25
 * @version 1.0
 */
@ApiModel(value = "ShopVO", description = "店铺信息响应对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ShopVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "店铺ID")
    @KeepLongAsNumber
    private Long shopId;

    @ApiModelProperty(value = "店铺编码")
    private String shopCode;

    @ApiModelProperty(value = "店铺名称")
    private String shopName;

    @ApiModelProperty(value = "店铺简介")
    private String shopBrief;

    @ApiModelProperty(value = "店铺logo")
    private String shopLogo;

    @ApiModelProperty(value = "店铺电话")
    private String shopPhone;

    @ApiModelProperty(value = "店铺图片")
    private String shopImage;

    @ApiModelProperty(value = "商家点位")
    private String location;

    @ApiModelProperty(value = "商家类型 1-同城服务 2-线上商城/同城配送")
    @JsonIgnore
    private Integer type;

    @ApiModelProperty(value = "商家类型 1-同城服务(到店用) 2-线上商城(电商购) 3-同城配送(同城送)")
    private Integer shopType;

    @ApiModelProperty(value="是否支持同城购0-否，1-是")
    private Integer isCityStore;

    @ApiModelProperty(value="是否支持电商购0-否，1-是")
    private Integer isOnlineStore;

    @ApiModelProperty(value="是否支持到店核销0-否，1-是")
    private Integer isInStore;

    @ApiModelProperty(value="同城配送-配送距离（公里）")
    private Integer cityStoreDistance;

    @ApiModelProperty(value="同城配送-营业状态0-打烊，1-营业")
    private Integer cityStoreIsserving;

    @ApiModelProperty(value = "主体类型 1-普通企业店 2-个体工商户 3-品牌旗舰店 4-其他组织")
    private Integer authenType;

    @ApiModelProperty(value = "区域编码")
    private String adcode;

    @ApiModelProperty(value = "店铺地址-省")
    private String province;

    @ApiModelProperty(value = "店铺地址-市")
    private String city;

    @ApiModelProperty(value = "店铺地址-区")
    private String district;

    @ApiModelProperty(value = "店铺地址")
    private String address;

    @ApiModelProperty(value = "店铺详细地址")
    private String addressDetail;

    @ApiModelProperty(value = "店铺总销量")
    @KeepLongAsNumber
    private Long totalSales;

    @ApiModelProperty(value = "店铺评分")
    private BigDecimal shopScore;

    @ApiModelProperty(value = "当前用户是否收藏店铺 1-收藏 0-未收藏")
    private Integer isCollect = 0;

    @ApiModelProperty(value = "收藏记录ID")
    private Long collectId;

    @ApiModelProperty(value = "客服信息")
    private CustomerServiceDTO customerService;

    @ApiModelProperty(value = "用户到店铺之间的距离（米）")
    private BigDecimal distance;

    @ApiModelProperty(value = "是否新店（1-是，0-否）")
    private Integer isNewShop = 0;

    @ApiModelProperty(value = "是否品牌店（1-是，0-否）")
    private Integer isBrand = 0;

    @ApiModelProperty(value = "品牌名称")
    private String brandName;

    @ApiModelProperty(value = "是否旗舰店（1-是，0-否）")
    private Integer isFlagshipStore = 0;

    @ApiModelProperty(value = "是否全天，1-是，0-否")
    private Integer allDayToUse = 0;

    @ApiModelProperty(value = "服务标签：今日热榜、全周可用、退款无忧、好评如潮")
    private List<String> serviceLabels;

    @ApiModelProperty(value = "店铺创建时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "营业周期列表")
    @JsonIgnore
    private List<CereBusinessTime> businessTimes;

    @ApiModelProperty(value = "营业时间")
    private String businessTime;

    @ApiModelProperty(value = "商品数据")
    private List<ShopProductVO> products;


}
